高维矩阵求逆的方法,inv、pinv、/ | 您所在的位置:网站首页 › 近似奇异矩阵求逆 方差的方法是什么 › 高维矩阵求逆的方法,inv、pinv、/ |
1、inv 与 pinv
原文地址:点击打开链接 对于方阵A,如果为非奇异方阵,则存在逆矩阵inv(A)对于奇异矩阵或者非方阵,并不存在逆矩阵,但可以使用pinv(A)求其伪逆 (1)inv inv(A)*B 实际上可以写成A\BB*inv(A) 实际上可以写成B/A这样比求逆之后带入精度要高 A\B=pinv(A)*B A/B=A*pinv(B) (2)pinv X=pinv(A),X=pinv(A,tol),其中tol为误差pinv是求广义逆 先搞清楚什么是伪逆。对于方阵A,若有方阵B,使得:A·B=B·A=I,则称B为A的逆矩阵。如果矩阵A不是一个方阵,或者A是一个非满秩的方阵时,矩阵A没有逆矩阵,但可以找到一个与A的转置矩阵A'同型的矩阵B,使得: A·B·A=A B·A·B=B此时称矩阵B为矩阵A的伪逆,也称为广义逆矩阵。因此伪逆阵与原阵相乘不一定是单位阵。 当A可逆时,B就是A的逆矩阵,否则就是广义逆。满足上面关系的A,B矩阵,有很多和逆矩阵相似的性质。 如果A为非奇异矩阵的话,虽然计算结果相同,但是pinv会消耗大量的计算时间。 在其他情况下,pinv具有inv的部分特性,但是不完全相同。 (3)\ 运算符 原文地址:点击打开链接 使用各类优化算法求逆都得不到好的结果,结果一个“\”运算居然很快就得到了很精确的解。这是个很奇妙的事情。因此,追求“\”的运算原理是很必要的。 matlab的help中写道: \ Backslash or left matrix divide. A\B is the matrix division of A into B, which is roughly the same as INV(A)*B , except it is computed in a different way. If A is an N-by-N matrix and B is a column vector with N components, or a matrix with several such columns, then X = A\B is the solution to the equation A*X = B. A warning message is printed if A is badly scaled or nearly singular. A\EYE(SIZE(A)) produces the inverse of A. If A is an M-by-N matrix with M < or > N and B is a column vector with M components, or a matrix with several such columns, then X = A\B is the solution in the least squares sense to the under- or overdetermined system of equations A*X = B. The effective rank, K, of A is determined from the QR decomposition with pivoting. A solution X is computed which has at most K nonzero components per column. If K < N this will usually not be the same solution as PINV(A)*B. A\EYE(SIZE(A)) produces a generalized inverse of A. C = mldivide(A,B) is called for the syntax 'A \ B' when A or B is an object. inv:Y=inv(X)返回方阵X的逆矩阵,如果X病态或者高度奇异,则会显示警告信息。实际上,很少需要真的把矩阵的逆求出来,常见的使用失误主要出现在求解线性方程组AX=b。一种求解方法为x=inv(A)*b,但如要达到更快,更稳定,就得用X=A\b。这个算法使用高斯消去法,因此不产生逆矩阵。 “\”:反斜线符号,矩阵左除。如果A是方阵,A\B近似等于inv(A)*B,只是他们的算法不一样。如果A是n*n的方阵,B是n*1的列向量,或n*?的矩阵,那么X=A\B是AX=B的解。如果A很病态或者很奇异,很会显示警告信息。A\EYE(SIZE(A))计算A的逆,参见mldivide可得到更多信息。如果A是m*n的矩阵,m!=n,B是m*1或m*?的列向量,那么X=A\B就是线性方程组AX=B(超定或者欠定)的最小二乘解。A的有效秩(effective rank)k有选主元的QR分解决定。Asolution X is computed that has at most k nonzero componentspercolumn。如果K,结果通常和pinv(A)*B不一样,后者是最小范数解。A\EYE(SIZE(A))用来求解A的广义逆。 mldivide(A,B):等价于A\B,A和B必须有一样多的行,除非A是个标量(这时就等于.\)。如果A是个方阵,A\B近似等于inv(A)*B,只是两者算法不一样。如果A是m*n的矩阵,那么X=A\B求解AX=B(超定或欠定)的最小二乘解,即(AX-B)的范数极小。 |
CopyRight 2018-2019 实验室设备网 版权所有 |